package com.itheima.d1_byteio;

import java.io.FileOutputStream;

//目标：掌握使用FileOutputStream写字节数据到文件
public class Demo04 {
    public static void main(String[] args) throws Exception {
        /**
         * 构造器：
         *      FileOutputStream(File file)：创建字节输出流管道与源文件对象接通
         *      FileOutputStream(File file，boolean append)：创建字节输出流管道与源文件对象接通，可追加数据
         *      FileOutputStream(String filepath)：创建字节输出流管道与源文件路径接通
         *      FileOutputStream(String filepath，boolean append)：创建字节输出流管道与源文件路径接通，可追加数据
         *
         * 写数据的api：
         *      write(int a)：写一个字节出去
         *      write(byte[] buffer)：写一个字节数组出去
         *      write(byte[] buffer , int pos , int len)：写一个字节数组的一部分出去
         *
         * 流的关闭和刷新：
         *      close()：关闭流，释放资源，但是在关闭之前会先刷新流。一旦关闭，就不能再写数据
         */
        //需求：使用文件字节输出流往b.txt文件中写出数据
        //1.创建文件字节输出流对象，可以给它一个File对象或者String文件路径，定位要写出到哪个文件！
        //FileOutputStream fos = new FileOutputStream(new File("day09-io\\b.txt"));
        FileOutputStream fos = new FileOutputStream("day12\\a.txt",true);
        //注意：一个形参的构造创建对象时，会把文件清空！如果希望追加，使用两个参数的构造，第二个参数给true
        //FileOutputStream fos = new FileOutputStream("day09-io\\b.txt", true);

        //2.写出一个字节数据 97
        fos.write(97);

        //3.写出一个字节数组
        byte[] bys = {98, 99, 100};
        fos.write(bys);

        //4.写出一个字节数组的一部分
        fos.write(bys, 0, 2);

        //注意：写出"\r\n"的字节数据就是换行
        bys = "\r\n".getBytes();
        fos.write(bys);
        fos.write("换行后的内容".getBytes());
        fos.write('c');

        //5.这种io流操作，最后如果不用了，记得关闭！释放资源
        fos.close();
    }
}
